#ifndef NETWORK_CLIENTCONNECTION_H_
#define NETWORK_CLIENTCONNECTION_H_

#ifdef _WIN32
	#include <windows.h>
	#include <sys/types.h>
	#include <winsock.h>
#else
	#include <sys/types.h>
	#include <sys/socket.h>
	#include <netinet/in.h>
	#include <netdb.h>
#endif

#include <sstream>
#include <string>

#include "UDPIO.h"

namespace Network {


/*
 * Klasa reprezentujaca polaczenie serwera z klientem.
 */
class ClientConnection : public UDPIO {
	// Adres podlaczonego klienta
	std::string clientIP_;
	// Port przydzielony przez serwer dla tego klienta
	int port_;

	unsigned char uid_;

	std::istringstream sin_;
	std::ostringstream sout_;

	// Numer kolejnego pakietu
	unsigned char nextMsgNo_;
public:
	ClientConnection();
	virtual ~ClientConnection();

	bool init(std::string from, int port, unsigned char uid);
	void run();

	std::istringstream& getInputString();
	std::ostringstream& getOutputStream();

	unsigned char getNextMsgNo();
	int getPort();
	std::string getClientIP();
	unsigned char getClientUID();
}; //class ClientConnection

} //namespace Network

#endif /* NETWORK_CLIENTCONNECTION_H_ */
